#include <iostream>

using namespace std;

/*
	Cuando el numero de discos es impar
	si hacemos (a-e-o) nos quedamos en la columna 2
	y con (e-a-o) nos quedamos en la columna 3
	mientras que si el numero de discos es par
	con (e-a-o) nos quedamos en la columna 2
	y con (a-e-o) en la columna 3.

	//Forma mas eficiente
	Impar = (e-a-o)
	Par   = (a-e-o)
*/




void mover(char a, int*b, int c, char d, int *e, int f);

int main()
{

		int n, *a, *b, *c;
        cin >> n;

        a = new int[n];
        b = new int[n];
        c = new int[n];

        for(int  i=0; i < n; i++)
                a[i] = 0, b[i] = 0, c[i] = 0;

        for(int i = 0; i<=n; i++)
                a[i] =  (n-i);

/*        //columna 2    
        //caso para 3 discos (auxiliar-extremo-origen)
        mover('A', a, 2, 'B', b, 0);
		mover('A', a, 1, 'C', c, 0);
		mover('A', b, 0, 'C', c, 1);
		mover('A', a, 0, 'B', b, 0);
		mover('A', c, 1, 'A', a, 0);
		mover('C', c, 0, 'B', b, 1);
		mover('A', a, 0, 'B', b, 2);
        
       
       	//columna 3
        //caso para 3 discos (extremo-auxiliar-origen)
        mover('A', a, 2, 'C', c, 0);
        mover('A', a, 1, 'B', b, 0);
        mover('C', c, 0, 'B', b, 1);
        mover('A', a, 0, 'C', c, 0);
        mover('B', b, 1, 'A', a, 0);
        mover('B', b, 0, 'C', c, 1);
        mover('A', a, 0, 'C', c, 2);

*/
        //columna 2
        //caso para 4 discos (extremo-auxiliar-origen)
        mover('A', a, 3, 'C', c, 0);
        mover('A', a, 2, 'B', b, 0);
		mover('C', c, 0, 'B', b, 1);
		mover('A', a, 1, 'C', c, 0);
		mover('B', b, 1, 'A', a, 1);
        mover('B', b, 0, 'C', c, 1);
        mover('A', a, 1, 'C', c, 2);
        mover('A', a, 0, 'B', b, 0);
        mover('C', c, 2, 'B', b, 1);
		mover('C', c, 1, 'A', a, 0);
		mover('B', b, 1, 'A', a, 1);
		mover('C', c, 0, 'B', b, 1);
		mover('A', a, 1, 'C', c, 0);
		mover('A', a, 0, 'B', b, 2);
		mover('C', c, 0, 'B', b, 3);
        
        
        
        
        
        


        //columna 3
        //caso para 4 discos (auxiliar-extremo-origen)
		
		//columna 3
		//caso para 5 discos (extremo-auxiliar-origen)
        
        //columna 2
        //caso para 5 discos (auxiliar-extremo-origen)
        
        

        for(int i=0; i < n; i++)
        		cout << b[i] << endl;

        cin.get();
        return 0;
}

void mover(char a, int*b, int c, char d, int *e, int f)
{

		cout << "Se movio " << b[c] << " de " << a << " a " << d << ": " <<  e[f] << endl;
				 e[f] = b[c];
				 b[c] = 0;
}
